import 'dart:typed_data'; // 强制使用标准库的 Uint8List
import 'package:bip39/bip39.dart' as bip39;
import 'package:bip32/bip32.dart' as bip32;
import 'package:hex/hex.dart';

class BIP39Helper {
  // 生成助记词
  static String generateMnemonic() {
    return bip39.generateMnemonic();
  }

  // 助记词转种子（关键修复：类型转换）
  static Uint8List mnemonicToSeed(String mnemonic) {
    final rawSeed = bip39.mnemonicToSeed(mnemonic);
    // 将底层 List<int> 强制转换为标准 Uint8List
    return Uint8List.fromList(rawSeed);
  }

  // 生成主私钥（兼容 bip32 1.0.5）
  static bip32.BIP32 seedToMasterPrivateKey(Uint8List seed) {
    return bip32.BIP32.fromSeed(seed);
  }

  // 派生私钥（示例路径：以太坊）
  static String deriveEthPrivateKey(bip32.BIP32 masterKey) {
    final path = "m/44'/60'/0'/0/0";
    final childKey = masterKey.derivePath(path);

    // 空安全校验
    if (childKey.privateKey == null) {
      throw Exception("派生路径错误: 无法获取私钥");
    }
    // 显式类型转换
    return HEX.encode(childKey.privateKey!.toList());
  }
}